package exercise;

import java.sql.Array;
import java.util.Arrays;
import java.util.Scanner;

public class Exercise002 {
    public static void main(String[] args) {

//        //给定一个有序整型数组, 实现二分查找
//        int[] arr = {1,2,3,4,5,6,7,8,9,10};
//        int tgt = 2;
//        System.out.println(binarySearch(arr,tgt));




//        //给定一个整型数组, 实现冒泡排序(升序排序)
//        int[] arr = {1,14,3,42,33,21,50,21};
//        System.out.println(Arrays.toString(bubbleSort(arr)));




//        //给定一个大小为 n 的数组，找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
//        //你可以假设数组是非空的，并且给定的数组总是存在多数元素。
//        int[] arr = {1,2,2,2,3};
//        int[] cnt =new int[4];
//        int n = arr.length;
//        for(int i = 0;i < n;i++){
//            cnt[arr[i]] += 1;
//        }for(int i = 0;i < cnt.length;i++){
//            if(cnt[i] > n/2){
//                System.out.println(i);
//            }
//        }




//        //调整数组顺序使得奇数位于偶数之前。调整之后，不关心大小顺序。
//        //如数组：[1,2,3,4,5,6]
//        //调整后可能是：[1, 5, 3, 4, 2, 6]
//        int[] arr = {1,2,3,4,5,6};
//        int tmp = 0;
//        int flag = 0;
//        for(int i = 0;i < arr.length;i++){
//            flag = 0;
//            if(arr[i] % 2 == 0){
//                for(int j = i + 1;j < arr.length;j++){
//                    if(arr[j] % 2 == 1){
//                        tmp = arr[i];
//                        arr[i] = arr[j];
//                        arr[j] = tmp;
//                        flag = 1;
//                    }
//                }if(flag == 0){
//                    break;
//                }
//            }
//        }
//        System.out.println(Arrays.toString(arr));



    }


    //冒泡排序(升序排序)
    public static int[] bubbleSort(int[] array){
        for(int i = 0;i < array.length;i++){
            for(int j = i + 1;j < array.length;j++){
                if(array[i] > array[j]){
                    int tmp = array[i];
                    array[i] = array[j];
                    array[j] = tmp;
                }
            }
        }
        return array;
    }




    //二分查找
    public static int binarySearch(int[] array,int target){
        int left = 0;
        int right = array.length - 1;
        int mid = 0;
        while(left <= right){
            mid = (left + right) / 2;
            if (array[mid] < target){
                left = mid + 1;
            }else if(array[mid] > target){
                right = mid - 1;
            }else{
                return mid;
            }
        }
            return -1;
    }
}
